

%module nxogre


%include "windows.i"
%include "std_string.i"
%include "std_map.i"
%include "std_vector.i"
%include "stl.i"

%{

#include "incs.h"

#define SWIG_FILE_WITH_INIT

#include "NxOgre.h"
#include "NxOgreCloth.h"

using namespace NxOgre;

typedef ActorParams::ActorFlags ActorFlags;
typedef ActorParams::ContactFlags ContactFlags;
typedef ActorParams::FreezeFlags FreezeFlags;
typedef ActorParams::BodyFlags BodyFlags;

typedef NxOgre::ShapeParams::ShapeFlags ShapeFlags;
typedef NxOgre::ShapeParams::ShapeFluidFlags ShapeFluidFlags;
typedef NxOgre::ShapeParams::ShapeClothFlags ShapeClothFlags;
typedef NxOgre::ShapeParams::ShapeSoftBodyFlags ShapeSoftBodyFlags;
%}

#define _OgreExport
#define _OgrePrivate
#define OGRE_AUTO_MUTEX
#define OGRE_MUTEX(name)

#define NxPublicFunction
#define NxPublicClass

#define NX_USE_CLOTH_API	1
#define NX_USE_SOFTBODY_API		1
#define NX_USE_OGRE	1


typedef float NxReal;
enum NxForceMode
	{
	NX_FORCE,                   //!< parameter has unit of mass * distance/ time^2, i.e. a force
	NX_IMPULSE,                 //!< parameter has unit of mass * distance /time
	NX_VELOCITY_CHANGE,			//!< parameter has unit of distance / time, i.e. the effect is mass independent: a velocity change.
	NX_SMOOTH_IMPULSE,          //!< same as NX_IMPULSE but the effect is applied over all substeps. Use this for motion controllers that repeatedly apply an impulse.
	NX_SMOOTH_VELOCITY_CHANGE,	//!< same as NX_VELOCITY_CHANGE but the effect is applied over all substeps. Use this for motion controllers that repeatedly apply an impulse.
	NX_ACCELERATION				//!< parameter has unit of distance/ time^2, i.e. an acceleration. It gets treated just like a force except the mass is not divided out before integration.
	};
//%include "Nxp.h"
//%include "NxSimpleTypes.h"
//%include "Nxf.h"

%include "NxOgreParams.h"

%ignore NxOgre::ShapeParams::mClothFlags;
%include "NxOgreShape.h"
%include "NxOgrePose.h"

%include "NxOgreActor.h"
%include "NxOgreBody.h"

namespace NxOgre
{
class Body : public Actor
{
};
}

%ignore NxOgre::Scene::createDeformableActor;
%ignore NxOgre::Scene::getActorsFromRaycast;
%ignore NxOgre::Scene::getSimType;
%ignore NxOgre::Scene::addMaterialPair;
%ignore NxOgre::Scene::batchDestroyActors;
%ignore NxOgre::Scene::addMaterialPairsFromFile;


%include "NxOgreScene.h"
%include "NxOgre.h"
%include "NxOgrePrerequisites.h"

